package com.example.zzy.zzytest.utils;

public class ArrayUtils {
    public static void main(String[] args) {
        System.out.println("\n随机不定长");
        int[] arr1 = generateRandomArray(10, 10);
        for(int num : arr1){
            System.out.print(num + " ");
        }

        System.out.println("\n随机不定长 正数");
        int[] arr2 = generateRandomPosiArray(10, 10);
        for(int num : arr2){
            System.out.print(num + " ");
        }

        System.out.println("\n随机定长");
        int[] arr3 = generateRandomFixedSizeArray(10, 10);
        for(int num : arr3){
            System.out.print(num + " ");
        }

        System.out.println("\n随机定长 正数");
        int[] arr4 = generateRandomFixedSizePosiArray(10, 10);
        for(int num : arr4){
            System.out.print(num + " ");
        }
    }
    /**
     * 生成[-maxvalue,maxvalue]随机不定长数组
     * @param maxSize
     * @param maxValue
     * @return
     */
    public static int[] generateRandomArray(int maxSize, int maxValue) {
        //Math.random() [0,1)小数
        //(int)(Math.random() * N) [0,N-1]整数
        //(int)(Math.random() * (N+1)) [0,N]整数

        int[] arr = new int[(int) (Math.random() * (maxSize + 1))];
        for(int i = 0; i<arr.length; i++){
            arr[i] = (int)(Math.random() * (maxValue+1)) - (int)(Math.random() * (maxValue+1));
        }

        return arr;
    }

    /**
     * 生成[0,maxvalue]随机不定长数组
     * @param maxSize
     * @param maxValue
     * @return
     */
    public static int[] generateRandomPosiArray(int maxSize, int maxValue) {
        //Math.random() [0,1)小数
        //(int)(Math.random() * N) [0,N-1]整数
        //(int)(Math.random() * (N+1)) [0,N]整数

        int[] arr = new int[(int) (Math.random() * (maxSize + 1))];
        for(int i = 0; i<arr.length; i++){
            arr[i] = (int)(Math.random() * (maxValue+1)) ;
        }

        return arr;
    }

    /**
     * 生成[-maxvalue,maxvalue]随机定长数组
     */
    public static int[] generateRandomFixedSizeArray(int size, int maxValue) {
        //Math.random() [0,1)小数
        //(int)(Math.random() * N) [0,N-1]整数
        //(int)(Math.random() * (N+1)) [0,N]整数

        int[] arr = new int[size];
        for(int i = 0; i<arr.length; i++){
            arr[i] = (int)(Math.random() * (maxValue+1)) - (int)(Math.random() * (maxValue+1));
        }

        return arr;
    }

    /**
     * 生成[0,maxvalue]随机定长数组
     */
    public static int[] generateRandomFixedSizePosiArray(int size, int maxValue) {
        //Math.random() [0,1)小数
        //(int)(Math.random() * N) [0,N-1]整数
        //(int)(Math.random() * (N+1)) [0,N]整数

        int[] arr = new int[size];
        for(int i = 0; i<arr.length; i++){
            arr[i] = (int)(Math.random() * (maxValue+1)) ;
        }

        return arr;
    }
}
